/***    
* date：2018.03.10
* name: 购物车的JS内容
* author：hj
* remarks：null
*/

function CartWrapFn(_config){
	for(var i in _config){
		this[i]=_config[i];
	}
	this.init();
 }
 CartWrapFn.prototype={
 	init:function(){
 		var _self = this;
 		_self.getData();
 	},
 	getData:function(){
 		var _self = this;
 		ajaxFn(APILIST_CART.cart,function(_d){
			_self.createDom(_d.goodsList);

			// 顶部商品数量显示
			_self.goodsTopId.html(_d.totalnums);
			// 底部商品数量显示
			_self.selectedGoodsNumId.html(_d.totalnums);
			// 商品价格总计
			_self.totalPriceId.html("￥"+_d.totalprice)
		});
 	},
 	createDom:function(_data){
 		var _self = this;
 		// 商品列表插入到html标签中
        $(cartTplFn(_data)).appendTo(_self.cartMainWrapId);
        // 增加商品数量事件执行
 		_self.addGoodsEvent();
 		// 减少商品数量事件执行
 		_self.reduceGoodsEvent();
 		// 输入商品数量事件执行
 		_self.enterNumsEvent();
 	    // 复选框点击事件执行
 		// _self.clickCheckBoxEvent();
 		// 商品删除事件执行
 		_self.removeGoodsEvent();
 		// 全选按钮点击事件执行
 		_self.checkALLBtnEvent();
 		// 图标复选框点击事件
 		_self.checkPlusFn();
 	},
 	goodsClickEvent:function(_clickDom,_c){
 		var _self       = this;
		var _goodsWrap  = _clickDom.parents('.goodsWrap');
		var _checkData  = _goodsWrap.find('.plus_check');
		var _subtotal   =  _goodsWrap.find('.subtotal');
		var _numsResult = _goodsWrap.find('.numsResult');
		
		// 获取商品的数量和单价
		var _goodsnum   = _checkData.attr('data-nums');
		var _goodsprice = _checkData.attr('data-price');

		var _clickUrl='';
		if(_c=='add'){
			_clickUrl=APILIST_CART.cart_add;
			_clickDom.parent().find('input').removeAttr('disabled');
		} else if (_c=='minus'){
			_clickUrl=APILIST_CART.cart_minus;
			if(_goodsnum<=1){
				_clickDom.attr('disabled','disabled');
			} else {
				_clickDom.removeAttr('disabled');
			}
		} else if (_c=='enter'){
			if( _clickDom.val()<=1 ){
				_clickDom.val(1);
			} else {
				_clickDom.parent().find('input').removeAttr('disabled');
			}
			_clickUrl=APILIST_CART.cart_enter;
			_goodsnum=_clickDom.val();
		}

		var _obj = {};
		_obj['num']   = _goodsnum;
		_obj['price'] = _goodsprice;


		getAjaxFn(_clickUrl,_obj,function(_data){
			// if(_data.num<=1){
			//  	_clickDom.attr('disabled','disabled');
			// } else {
			// 	_clickDom.parent().find('input').removeAttr('disabled');
			// }

			_checkData.attr('data-nums',_data.num);
			_subtotal.html('￥'+_data.total);
			_numsResult.val(_data.num);
			_self.allGoodsNums();
		});
 		
 	},
 	// 增加商品按钮事件
 	addGoodsEvent:function(){
 		var _self = this;
 		$('.addBtn').on('click',function(){
 			// 获取当前商品的信息，并计算结果，更新数据
 			_self.goodsClickEvent($(this),'add');
 		});
 	},
 	// 减少商品按钮事件
 	reduceGoodsEvent:function(){
		var _self = this;
		$('.reduceBtn').on('click',function(){
			_self.goodsClickEvent($(this),'minus');
		});
 	},
 	// 输入商品数量事件
 	enterNumsEvent:function(){
 		var _self = this;
 		var _numsResult = _self.cartMainWrapId.find('.numsResult');
 		// console.log(_numsResult);
 		_numsResult.on('blur',function(){
 			_self.goodsClickEvent($(this),'enter');
 		});
 	},
 	// // 复选框点击事件
 	// clickCheckBoxEvent:function(){
 	// 	var _self = this;
 	// 	var _checkData  =  _self.cartMainWrapId.find('.plus_check');
 	// 	_checkData.on('click',function(){
 	// 		_self.allGoodsNums();
 	// 		_self.updateCheckALLstate();
 	// 	});
 	// },
 	// 商品删除事件
 	removeGoodsEvent:function(){
 		var _self = this;
 		var _delBtn = _self.cartMainWrapId.find('li.delBtn');
 		var _goodsWrap = _self.cartMainWrapId.find('.goodsWrap');
 		_delBtn.on('click',function(){
 			$(this).parents('.goodsWrap').remove();
 			_self.allGoodsNums();
 			_self.updateCheckALLstate();
 		});
 	
 	},
 	// 全选按钮状态更新
 	updateCheckALLstate:function(){
 		var _self = this;
 		var _checkData  =  _self.cartMainWrapId.find('.plus_check');
 			for(var i=0;i<_checkData.length;i++){
 				if(_checkData.eq(i).attr('data-check')==0){
 					_self.allCheckBoxBtn.removeAttr('checked');
 					break;
 				}
 				    _self.allCheckBoxBtn.attr('checked',true);
 			}
 	},
 	// 全选按钮点击事件
 	checkALLBtnEvent:function(){
 		var _self = this;
 		var _checkData  =  _self.cartMainWrapId.find('.plus_check');
 		_self.allCheckBoxBtn.on('click',function(){
 			if($(this).is(':checked')==true){
 				_checkData.attr('data-check',1);
 				_checkData.removeClass('plus_bg_2').addClass('plus_bg_1');
 				// 上下全选按钮统一
 				_self.allCheckBoxBtn.attr('checked',true);
 			} else{
 				_checkData.attr('data-check',0);
 				_checkData.removeClass('plus_bg_1').addClass('plus_bg_2');
 				// 上下全选按钮统一
 				_self.allCheckBoxBtn.removeAttr('checked');
 			}
 			_self.allGoodsNums();
 		}); 

 	},
 	// 底部商品数量更新
 	allGoodsNums:function(){
 		var _self       = this;
 		var _checkData  =  _self.cartMainWrapId.find('.plus_check');
 		var _arrInfo ={
 			arr:[]
 		};
 		// 当商品被删除时，显示“购物车已清空”
 		if( _checkData.length==0 ){
 			_self.allCheckBoxBtn.removeAttr('checked');
 			_self.cartMainWrapId.html('<h1 class="cartEmpty">购物车已清空</h1>')
 		}
 		for(var i=0;i<_checkData.length;i++){
 			if(_checkData.eq(i).attr('data-check')==1){
			var _temp = {};
 			_temp['n']=_checkData.eq(i).attr('data-nums');
 			_temp['p']=_checkData.eq(i).attr('data-price');
 			_arrInfo.arr.push(_temp);	
 			}
 		}
 		if(_arrInfo.arr==0){
 			var _temp = {};
 			_temp['n']=0;
 			_temp['p']=0;
 			_arrInfo.arr.push(_temp);
 		}
 		
 			console.log(_arrInfo.arr)
		getAjaxFn(APILIST_CART.cart_totalmoney,_arrInfo,function(_data){
			// 底部数量更新
 			_self.selectedGoodsNumId.html(_data.allnums);
 			// 顶部数量更新
 			_self.goodsTopId.html(_data.allnums);
 			// 总金额更新
 			_self.totalPriceId.html('￥'+_data.allprice);	
		});
 	},
 	checkPlusFn:function(){
 		var _self = this;
 		var _plus = _self.cartMainWrapId.find('.plus_check');
 		_plus.checkPlus(function(){
 			_self.updateCheckALLstate();
 			_self.allGoodsNums();
 		});

 	}
}		 

 new CartWrapFn({
 	cartMainWrapId:$('#cartMainWrapId'),
 	goodsTopId:$('#goodsTopId'),
 	selectedGoodsNumId:$('#selectedGoodsNumId'),
 	totalPriceId:$('#totalPriceId'),
 	allCheckBoxBtn:$('.allCheckBoxBtn')

 });